Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Das Filtern ist eine der wichtigsten Funktionen von Abfragen. In anderen Artikeln haben wir bereits gezeigt, welche Besonderheiten das Filtern von Textfeldern und Zahlenfeldern mit sich bringt. Im vorliegenden Artikel schauen wir uns das Filtern von Datensätzen nach dem Wert von Datumsfeldern an. Mögliche Kriterien sind ein bestimmtes Datum, die Zeit ab oder bis zu einem Datum, die Zeit zwischen zwei Daten, der heutige Tag, ein bestimmter Monat oder ein bestimmtes Jahr und viele mehr.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2205_NachDatumFiltern.accdb.
Unterscheidung: Daten mit und ohne Uhrzeit
Bevor wir in die verschiedenen Möglichkeiten zum Filtern von Datensätzen nach der Datumsangabe in einem Feld einsteigen, müssen wir einen wichtigen Unterschied klären: Es gibt Datumsangaben mit und ohne Uhrzeit. Der Grund für diese Unterscheidung ist, wie Access Datumsangaben intern speichert. Dazu müssen wir außerdem wissen, dass die Ausgabe von Datumsangaben nur eine Formatierung von Double-Zahlen in einem bestimmten Format ist.
Intern werden Datumsangaben also als Zahlen des Datentyps Double gespeichert. Dabei geben die Stellen vor dem Komma die Anzahl der Tage seit dem 30.12.1899 an. Der Wert 1 entspricht also beispielsweise dem 31.12.1899, der Wert 44763 dem Datum 21.7.2022. Die Uhrzeit wird in den Nachkommastellen des Double-Wertes als Bruchteil eines Tages gespeichert. Haben wir keine Nachkommastellen, entspricht dies 0:00 Uhr. Lauten die Nachkommastellen 0,25, entspricht dies 6:00 Uhr und 0,5 entspricht 12:00 Uhr.
Fassen wir das mit dem Datum beziehungsweise der Zahl vor dem Komma zusammen, entspricht der Wert 44763,75 also beispielsweise 21.7.2022 18:00:00 Uhr.
Wir gehen in den folgenden Beispielen zunächst von reinen Datumsangaben ohne Angabe der Uhrzeit aus, was zwar von Access in einer Tabelle als reines Datum angezeigt wird, aber eigentlich dem jeweiligen Datum plus der Zeitangabe 0:00:00 Uhr entspricht. Wenn wir jedoch Vergleiche mit Datumsangaben ohne Uhrzeit anstellen wollen, ist es wichtig, dass alle Werte ohne Uhrzeit kommen.
Wenn wir sonst wissen wollen, welche Bestellungen alle am 21.7.2022 erfolgt sind und wir speichern die Bestellungen mit Uhrzeit in dem Feld BestelltAm der Bestellungentabelle, also beispielsweise 21.7.2022 6:00:00, dann wird diese Bestellung nicht im Ergebnis auftauchen – denn intern sucht Access nach Datensätzen, die im Feld BestelltAm den Wert 44763 enthalten, aber es liegt nur eines mit dem Wert 44763,25 vor.
Also nutzen wir für die ersten Beispiele ein Feld, das nur reine Datumsangaben ohne Uhrzeit beziehungsweise Nachkommastellen enthält (siehe Bild 1).
Bild 1: Tabelle mit einem Datumsfeld ohne Uhrzeit
Genaues Datum
Die erste und einfachste Variante ist das Auffinden von Datensätzen, die in einem Feld ein bestimmtes Datum enthalten.
Wenn wir in der obigen Tabelle nach allen Bestellungen vom 2.6.2021 suchen wollen, geben wir diesen Wert in die Zeile Kriterien für die Spalte BestelltAm ein (siehe Bild 2).
Bild 2: Datum als Vergleichswert
Direkt nachdem wir die Eingabe abschließen, indem wir in eine andere Zeile oder Spalte klicken, ändert Access den Wert 2.6.2021 automatisch in den folgenden Wert um:
#02.06.2021#
Es ergänzt also vorn und hinten eine Raute und füllt die Angabe für die Tage und Monate mit 0 auf. Dies ist das offizielle Format für die Eingabe von Datumsangaben in Abfragevergleichswerten.
Gibst Du die Rauten direkt mit ein, weiß Access, dass Du ein Datum als Vergleichswert nutzen möchtest und prüft dieses direkt bei der Eingabe.
Nicht dieses Datum
Wollen wir alle Datensätze ermitteln, deren Bestelldatum gerade nicht an dem angegebenen Datum bestellt wurden, verwenden wir das folgende Kriterium für das Feld BestelltAm:
Nicht #02.06.2021#
Vor einem bestimmten Datum
Um alle Datensätze abzufragen, deren Bestelldatum vor einem bestimmten Datum liegt, verwenden wir einen Vergleichsausdruck mit dem Kleiner-Zeichen:
<#9.06.2021#
Bis zu einem bestimmten Datum
Wenn wir hier auch noch das angegebene Datum einschließen wollen, nutzen wir statt dem Kleiner-Operator zusätzlich noch das Gleichheitszeichen:
<=#09.06.2021#
Nach einem bestimmten Datum
Für Bestellungen, die nach einem bestimmten Datum liegen, setzen wir den Größer-Vergleichsoperator ein:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo